package c03数据类型和运算符;

public class 自增自减和运算符优先级问题 {

	public static void main(String[] args) {
		int j = 0;
		j++;
		System.err.println(j);

		int k = 0;
		System.err.println(k++);//0

		int l = 0;
		System.err.println(l++);//0
		System.err.println(l);//1，说明上面先打印I，然后再执行I++，所以这里I变成了1！

		int t = 0;
		int i = 0;
		t = i++;
		System.err.println(t);//0
		System.err.println(i);//1，说明上面先拿出i值放在=右边，然后执行i++，所以t获得了i原来的值0！而i变成了1！

		int v = 11;
		v = v++ * v--;//这个过程有点复杂：1、11；2、v++，v变为12；3、11*12（这时v的值为12！）；4、v--，
		//v又变回11！但是接着 5、v=11*12，即v最后变成了132！
		System.err.println(v);//11*12=132
		v = 11;
		v = ++v * --v;
		System.err.println(v);//12*11=132

		int a = 5;
		int b = 4;
		int c = a++ - --b * ++a / b-- >> 2 % a--;//这个过程很复杂，可以先按优先级划分为几块，再分别计算：
		//(a++ - (--b*++a/b--))>>(2%a--)=a++ - 3*++a/b-- >> 2%a--=a++ - 3*6/b-- >> 2%a--
		//=a++ - 3*6/3 >> 2%a--=a++ - 3*6/3 >> 2%6=5-3*6/3>>2%6=5-6>>2=-1>>2=-1
		System.err.println(a);//6
		System.err.println(b);//2
		System.err.println(c);//-1！
		System.err.println(-1 >> 2);//-1！

		//我的测试
		int x = 0, y = 0, z = 0;
		z = x++ + ++y - y--;
		System.err.println(x);
		System.err.println(y);
		System.err.println(z);
	}

}
